home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1996 / MacHack 1996.toast / Hacks / Hacks ’95 / GEQTHack / GEQTHack.src / GEMovie.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-06-24  |  1.7 KB  |  72 lines  |  [TEXT/MMCC]

  1. /*
  2.     GEMovie.c
  3.     
  4.     Graphic Elements QuickTime movie test
  5.     
  6.     Copyright 1995 by Al Evans. All rights reserved.
  7.     
  8.     5/11/95
  9.     
  10. */
  11.  
  12. #include "GEMovie.h"
  13. #include "QTMovieGE.h"
  14.  
  15. pascal void TestMovieAutochange(GEWorldPtr world, GrafElPtr movieElement);
  16.  
  17. Boolean LoadQTMovieScene(GEWorldPtr world)
  18. {
  19.     FSSpec    movieFSSpec;
  20.     OSErr    err;
  21.     short    mRefNum;
  22.     Movie    movie;
  23.     GrafElPtr element;
  24.     
  25.     err = FSMakeFSSpec(0, 0, "\pQTClock2.moov", &movieFSSpec);
  26.     if (err != noErr)
  27.         return false;
  28.     err = OpenMovieFile(&movieFSSpec, &mRefNum, fsRdPerm);
  29.     if (err != noErr)
  30.         return false;
  31.     err = NewMovieFromFile(&movie, mRefNum, nil, nil, newMovieActive, nil);
  32.     CloseMovieFile(mRefNum);
  33.     if (err != noErr)
  34.         return false;
  35.     
  36.     element = NewQTMovieGE(world, movieID, moviePlane, movie, 20, 143);
  37.     if (element == nil) {
  38.         DisposeMovie(movie);
  39.         return false;
  40.     }
  41.     SetTimeBaseFlags(GetMovieTimeBase(movie), loopTimeBase);
  42.     err = LoadMovieIntoRam(movie, 0, GetMovieDuration(movie), keepInRam);
  43.     SetAutoChange(world, movieID, TestMovieAutochange, nil, 67);
  44.     return true;
  45. }
  46.  
  47. void PlayGEMovie(GEWorldPtr world, Boolean playIt)
  48. {
  49.     Movie geMovie = GetGEMovie(world, movieID);
  50.     
  51.     if (geMovie != nil) {
  52.         SetMovieRate(geMovie, playIt?0x00010000:0);
  53.     }
  54. }
  55.  
  56. pascal void TestMovieAutochange(GEWorldPtr world, GrafElPtr movieElement)
  57. {
  58.     if (movieElement->animationRect.right > (world->animationRect.right - 20))
  59.         movieElement->changeData = (Ptr) -1;
  60.     else
  61.         if (movieElement->animationRect.left < (world->animationRect.left + 20)) 
  62.             movieElement->changeData = nil;
  63.     if (movieElement->changeData == nil)
  64.         // Move right
  65.         PtrMoveElement(world, movieElement, 1, 0);
  66.     else
  67.         PtrMoveElement(world, movieElement, -1, 0);
  68.     // Call "standard" autochange proc for movie element
  69.     GEMovieAutoChange(world, movieElement);
  70. }
  71.  
  72.